草庐IT

c++ - 从 C++ 拦截 Fortran STOP

全部标签

c++ - 拦截并将 C 调用转发给第三方库

我有一个调用第三方共享库(C)的应用程序(A)。我想自己写一个库(B)拦截A到C的调用,有些情况下用自己的代码替换调用,有些情况下做一些额外的处理,然后在C中调用匹配的函数,在有些情况下直接将调用转发给C。该应用程序是开源的,所以我可以只是更改每个调用站点以调用B中的类似名称的函数,然后在需要时调用C中的相应函数,但那将是很多工作,并且会使合并应用程序中的上游更改变得困难。我没有第三方库的来源。如果它是仅header,那么我可以只使用命名空间来实现这一点,但是当我的库和第三方库似乎都需要定义完全相同的符号时,我不确定如何去做。有没有什么办法可以让它工作?我主要针对OSX,但希望它能在l

java - 在 linux 上拦截 HTTP 请求

我需要一些可以拦截HTTP请求、提取其信息(内容、目的地等)、执行各种分析任务并最终确定是否应丢弃请求的东西。然后必须将法律请求转发给应用程序。基本上,与IDS具有相同的功能。但是请注意,我不是在寻找数据包嗅探器/过滤器。我想要在HTTP级别上运行的东西。它应该可以在linux上实现,并在与请求所指向的应用程序相同的系统上运行。作为奖励,可以支持https(请求内容的未加密查看) 最佳答案 尝试mitmproxy.mitmproxy是一个支持SSL的HTTP中间人代理。它提供了一个控制台界面,允许即时检查和编辑流量。mitmdump

c - 如何使 Linux 中的脚本使用我的拦截器并工作? (#!)

我为linux制作了一个简单的shell。它使用getline()逐行读取,直到将ctrl+d(eof/-1)输入标准输入。当像这样逐行代码进入标准输入时:ls-al&ls-a-l我的shell工作得很好。我试图通过我的shell运行脚本,但它不起作用。当我执行脚本时,我的shell会自动执行(第一行),但shell不会解释其他行。#!/home/arbuz/Patryk/projekt/a.outls-al&ls-a-l是什么原因造成的?我不得不说我是linux的初学者,老师对所有这些东西都没有说什么。只是一个家庭作业。我已经进行了一些研究,但仅此而已。这是我的Shell代码。我已将

c - 拦截系统调用

我一直在尝试在内核级别拦截系统调用。我从这个question得到了基本的想法.我试图拦截的系统调用是fork()。所以我从System.map中找到了sys_fork()的地址,结果是0xc1010e0c。现在我编写了如下模块。#include#include#include#include#includeMODULE_LICENSE("GPL");void**sys_call_table;asmlinkageint(*original_call)(structpt_regs);asmlinkageintour_call(structpt_regsregs){printk("Inter

linux - 拦截文件系统系统调用

我正在编写一个应用程序,我需要拦截一些文件系统系统调用,例如。取消链接。我想保存一些文件,比如abc。如果用户删除了该文件,那么我需要将其复制到其他地方。所以我需要在删除abc之前取消链接以调用我的代码,以便我可以保存它。我已经完成了与拦截系统调用相关的线程,但是像LD_PRELOAD这样的方法在我的情况下不起作用,因为我希望它是安全的并在内核中实现,所以这个方法不会有用。inotify在事件发生后通知,所以我无法保存它。你能建议任何这样的方法吗?我想在内核模块中实现它,而不是修改内核代码本身。GrahamLee建议的另一种方法,我曾想到过这种方法,但它有一些问题,我需要所有文件的硬链

c - 这是拦截系统调用的好方法吗?

我正在写一个工具。该工具的一部分是能够记录系统调用的参数。好吧,我可以为此目的使用ptrace,但是ptrace非常慢。我想到的一个更快的方法是修改glibc。但这变得越来越困难,因为gcc神奇地插入了自己的内置函数作为系统调用包装器,而不是使用glibc中定义的代码。使用-fno-builtin也无济于事。所以我想到了编写一个共享库的想法,其中包括每个系统调用包装器,例如mmap,然后在调用实际的系统调用包装器函数之前执行日志记录。例如,下面给出了我的mmap的伪代码。intmmap(...){log_parameters(...);call_original_mmap(...);.

c - 我怎么能拦截 linux 系统调用?

除了LD_PRELOAD技巧和用您提供的系统调用替换某个系统调用的Linux内核模块之外,是否有可能拦截系统调用(例如打开),以便它在到达实际打开? 最佳答案 为什么你不能/不想使用LD_PRELOADtrick?此处示例代码:/**File:soft_atimes.c*Author:D.J.Capelis**Compile:*gcc-fPIC-c-osoft_atimes.osoft_atimes.c*gcc-shared-osoft_atimes.sosoft_atimes.o-ldl**Use:*LD_PRELOAD="./s

linux - 需要拦截 HID 键盘事件(然后阻止它们)

我有一个RFIDUSB设备,它注册为HID设备(或多或少是USB键盘)。我正在寻找一种方法来捕获此输入,并在它到达普通键盘事件处理程序之前阻止/过滤它(并将10位RFID代码输出到控制台)。我当然必须只捕获这个设备,并单独留下真正的键盘输入(或传递它)。我最初的想法是在UDEV中阻止设备(因此usbhid/event/kbd内核模块没有绑定(bind)到它)并为这个设备编写我自己的基本驱动程序-但我不知道从哪里开始,或者这是否可行。如果我编写一个事件过滤器模块可以与事件驱动程序保持一致并捕获(然后过滤)适当从RFID单元输入,但让其他一切通过。我想这样的模块不需要太多代码,而且是最实用

linux - 如何在 Linux 上拦截来自 USB 设备的消息?

我有一个流行的绘图板,可以通过USB连接到我的PC。连接后,平板电脑会检测手部Action并相应地操纵指针。在某处,平板电脑正在将此数据传输到我的计算机。我的目标是在处理数据后拦截这些传输并操纵鼠标。我发现的流行语是:devicedrivers和HID,但我没能拼凑出更多。假设这是可能的,我有几个问题:如果数据格式已知,如何做到这一点?如果数据格式未知/专有,如何做到这一点?我的电脑运行的是Ubuntu(但非常感谢与任何形式的Linux操作系统相关的答案!)。注意:这个question类似但适用于Windows。 最佳答案 实际上您

android - 客户端(手机)如何拦截和修改http响应

我是Android开发人员,我的应用程序使用了一堆httpREST调用并从服务器获取响应。我使用Charles来检查数据(所以我必须在我的设备上安装Charles证书,以便我自己读取https流量)。有没有像Charles这样的工具可以让我在发送到客户端之前修改响应数据包?? 最佳答案 根据您要修改的具体内容,Charles的内置RewriteTool可能是您正在寻找的。您可以在“工具”菜单中找到它。您可以通过协议(protocol)、主机、端口、路径和查询指定哪些请求应被修改,并且您有以下修改选项:添加、修改、删除header(请